#ifndef MESSAGETYPES_H_
#define MESSAGETYPES_H_

#define DECL_MSG(name, msgid) name = (msgid##U)
#define DEF_MSG(name, len) {name, (len##U)}

typedef enum ENM_MSG_IDS {
	// NET events sent by client
	DECL_MSG(NET_SENDLOGIN,0xBD5A01AA),
	DECL_MSG(NET_SENDLOADMAPOK,0xBD5A7CAA),
	DECL_MSG(NET_SENDGIVEMAP,0xBD5A7BAA),
	DECL_MSG(NET_SENDGETGAMEINFO,0xBD5A74AA),
	DECL_MSG(NET_SENDDIR,0xBD5A29AA),
	DECL_MSG(NET_SENDGETSCORES,0xBD5AA7AA),
	DECL_MSG(NET_SENDGIVEGLOBALINFO,0xBD5A86AA),
	DECL_MSG(NET_SENDKARMAVOTING,0xBD5A67AA),
	DECL_MSG(NET_SENDPING,0xBD5A05AA),
	DECL_MSG(NET_SENDMOVE_RUN,0xBD5A2CAA),
	DECL_MSG(NET_SENDMOVE_WALK,0xBD5A2BAA),
	DECL_MSG(NET_SENDCOMMAND,0xBD5A15AA),
	DECL_MSG(NET_SENDTEXT,0xBD5A1FAA),
	DECL_MSG(NET_SENDTALK,0xBD5A6DAA),

	// NET events received by client
	DECL_MSG(NET_ONLOGINSUCCESS,0xBD5A02AA),

	DECL_MSG(NET_ONREGSUCCESS,0xBD5A04AA),
	DECL_MSG(NET_ONPING,0xBD5A05AA),
	DECL_MSG(NET_ONCHECKUID0,0xBD5A06AA),

	DECL_MSG(NET_ONADDCRITTER_1,0xBD5A0BAA),
	DECL_MSG(NET_ONADDCRITTER_2,0xBD5A0CAA),
	DECL_MSG(NET_ONREMOVECRITTER,0xBD5A0DAA),

	DECL_MSG(NET_ONCRITTERACTION,0xBD5A5BAA),
	DECL_MSG(NET_ONCHECKUID2,0xBD5A4EAA),
	DECL_MSG(NET_ONCONTAINERINFO,0xBD5A53AA),
	DECL_MSG(NET_ONSOMEITEM,0xBD5A5AAA),
	DECL_MSG(NET_ONANIMATEITEM,0xBD5A4BAA),
	DECL_MSG(NET_ONADDITEMONMAP,0xBD5A47AA),
	DECL_MSG(NET_ONCHANGEITEMONMAP,0xBD5A48AA),
	DECL_MSG(NET_ONERASEITEMFROMMAP,0xBD5A4AAA),
	DECL_MSG(NET_ONCHOSENERASEITEM,0xBD5A42AA),
	DECL_MSG(NET_ONCRAFTRESULT,0xBD5A3FAA),
	DECL_MSG(NET_ONCHOSENCLEARITEMS,0xBD5A40AA),
	DECL_MSG(NET_ONCHOSENADDITEM,0xBD5A41AA),
	DECL_MSG(NET_ONCRAFTASK,0xBD5A3DAA),
	DECL_MSG(NET_ONCRITTERPARAM,0xBD5A35AA),
	DECL_MSG(NET_ONCHOSENPARAM,0xBD5A34AA),
	DECL_MSG(NET_ONCRITTERXY,0xBD5A2EAA),
	DECL_MSG(NET_ONCHOSENPARAMS,0xBD5A33AA),
	DECL_MSG(NET_ONCRITTERMOVE,0xBD5A2DAA),
	DECL_MSG(NET_ONMAPTEXTMSG,0xBD5A24AA),
	DECL_MSG(NET_ONMAPTEXTMSGLEX,0xBD5A25AA),
	DECL_MSG(NET_ONCRITTERDIR,0XBD5A2AAA),
	DECL_MSG(NET_ONMAPTEXT,0xBD5A23AA),
	DECL_MSG(NET_ONTEXTMSG_1,0xBD5A22AA),
	DECL_MSG(NET_ONTEXTMSG_0,0xBD5A21AA),
	DECL_MSG(NET_ONCHECKUID1,0xBD5A1EAA),
	DECL_MSG(NET_ONTEXT,0xBD5A20AA),
	DECL_MSG(NET_ONITEMLEXEMS,0XBD5A17AA),
	DECL_MSG(NET_ONCRITTERLEXEMS,0XBD5A16AA),
	DECL_MSG(NET_ONSHOWSCREEN,0XBD5A7DAA),
	DECL_MSG(NET_ONGAMEINFO,0XBD5A75AA),
	DECL_MSG(NET_ONLOADMAP,0XBD5A79AA),
	DECL_MSG(NET_ONMAP,0XBD5A7AAA),
	DECL_MSG(NET_ONPLAYERSBARTERSETHIDE,0XBD5A73AA),
	DECL_MSG(NET_ONPLAYSOUND_1,0XBD5A66AA),
	DECL_MSG(NET_ONCHOSENTALK,0XBD5A6FAA),
	DECL_MSG(NET_ONPLAYERSBARTER,0XBD5A72AA),
	DECL_MSG(NET_ONPLAYSOUND_0,0XBD5A65AA),
	DECL_MSG(NET_ONCOMBATRESULT,0XBD5A61AA),
	DECL_MSG(NET_ONEFFECT,0XBD5A62AA),
	DECL_MSG(NET_ONFLYEFFECT,0XBD5A63AA),
	DECL_MSG(NET_ONCRITTERSETANIMS,0XBD5A60AA),
	DECL_MSG(NET_ONCRITTERANIMATE,0XBD5A5FAA),
	DECL_MSG(NET_ONCRITTERITEMDATA,0XBD5A5EAA),
	DECL_MSG(NET_ONCRITTERKNOCKOUT,0XBD5A5CAA),
	DECL_MSG(NET_ONCRITTERMOVEITEM,0XBD5A5DAA),
	DECL_MSG(NET_ONPROTOITEMDATA,0XBD5A8EAA),
	DECL_MSG(NET_ONGLOBALENTRANCES,0XBD5A8AAA),
	DECL_MSG(NET_ONCHECKUID3,0XBD5A8BAA),
	DECL_MSG(NET_ONMSGDATA,0XBD5A8DAA),
	DECL_MSG(NET_ONFOLLOW,0XBD5A89AA),
	DECL_MSG(NET_ONGLOBALINFO,0XBD5A87AA),
	DECL_MSG(NET_ONVIEWMAP,0XBD5A83AA),
	DECL_MSG(NET_ONRUNCLIENTSCRIPT,0XBD5A7EAA),
	DECL_MSG(NET_ONDROPTIMERS,0XBD5A81AA),
	DECL_MSG(NET_ONUSERHOLOSTR,0XBD5AA6AA),
	DECL_MSG(NET_ONQUEST_0,0XBD5AA1AA),
	DECL_MSG(NET_ONQUEST_1,0XBD5AA2AA),
	DECL_MSG(NET_ONHOLOINFO,0XBD5AA3AA),
	DECL_MSG(NET_ONSCORES,0XBD5AA8AA),
	DECL_MSG(NET_ONAUTOMAPSINFO,0XBD5AAAAA),
	DECL_MSG(NET_ONCHECKUID4,0XBD5AD3AA),
} MsgId, *pMsgIds;

typedef struct STU_MSG_TYPES {
	MsgId msgid;
	DWORD msg_len;
} MsgTypes, *pMsgTypes;

#endif /* MESSAGETYPES_H_ */
